package com.wy.office.swift.word;

import java.io.ByteArrayOutputStream;

import org.apache.poi.xwpf.usermodel.Document;

import com.wy.office.swift.exception.OfficeSwiftException;
import com.wy.office.swift.word.model.WordParamModel;

/**
 * word处理接口
 * 
 * @author wangyuan
 * @since 2018年7月13日
 */
public interface IWordHandler {
    
    /**
     * 替换word文档中的变量，并保存为一个新word文档<br/>
     * <br/>
     * 注意项：<br/>
     * 需要注意的是doc(03版文档)文档中不能出现office2007中office设置好的样式，否则会出现乱码的
     * @param sourcePathName
     * @param targetPathName
     * @param param
     * @throws Exception
     */
    public void dealOfficeWord(String sourcePathName, String targetPathName, WordParamModel param) throws OfficeSwiftException;
    
    /**
     * 替换word文档中的变量，并保存为一个输出字节流
     * @param sourcePathName
     * @param param
     * @return
     * @throws OfficeSwiftException
     */
    public ByteArrayOutputStream dealOfficeWord(String sourcePathName, WordParamModel param) throws OfficeSwiftException;
    
    /**
     * 替换word文档中的变量
     * @param document
     * @param param
     * @return
     * @throws OfficeSwiftException
     */
    public Document dealOfficeWord(Document document, WordParamModel param) throws OfficeSwiftException;
    
    /**
     * 将target文档合并到source中
     * @param source
     * @param target
     * @throws OfficeSwiftException
     */
    public Document mergeDocment(Document source, Document target) throws OfficeSwiftException;
}
